home *** CD-ROM | disk | FTP | other *** search
- { The following Turbo Pascal Program displays HARDWARE SCROLLinG
- For 100% Compatible VGA cards,in mode $13.
- I'd be grateful if anyone interested
- could test this and report the results :
- }
-
- Program VGASLIDE; {requirements TP6 or higher + register-Compatible VGA
- }
-
- Uses Crt;
-
- Var
- t,slide:Word;
- ch:Char;
-
- Procedure VgaBase(Xscroll,Yscroll:Integer);
- Var dum:Byte;
- begin
- Dec(SLIDE,(Xscroll+320*Yscroll)); { slide scrolling state }
- Port[$03d4]:=13; { LO register of VGAMEM offset }
- Port[$03d5]:=(SLIDE shr 2) and $FF; { use 8 bits: [9..2] }
- Port[$03d4]:=12; { HI register of VGAMEM offset }
- Port[$03d5]:= SLIDE shr 10; { use 6 bits [16..10] }
- Dum:=Port[$03DA]; { reset to input by dummy read }
- Port[$03C0]:=$20 or $13; { smooth pan = register $13 }
- Port[$03C0]:=(SLIDE and 3) Shl 1; { use bits [1..0], make it 0-2-4-6
- }
- end;
-
-
- begin {main}
-
- Asm {inITIALIZE vga mode $13 using BIOS}
- MOV AX,00013h
- inT 010h
- end;
-
- SLIDE:=0;
-
- { draw a quick test pattern directly to video memory }
- For T:= 0 to 63999 do MEM[$A000:T]:=(T mod (317 + T div 10000)) and 255;
-
- Repeat
- Vgabase(-1,-1); { scroll smoothly in UPPER LEFT direction }
- Delay(14);
- Until KeyPressed;
- ch:=ReadKey;
-
- Repeat
- Vgabase( 1, 1); { scroll smoothly in LOWER RIGHT direction }
- Delay(14);
- Until KeyPressed;
- ch:=ReadKey;
-
- Asm
- MOV AX,00003h {reset to Textmode}
- inT 010h
- end;
-
- end.